// pages/admin/admin.js
Page({
  data: {
    isAuthenticated: false,
    password: '',
    verifying: false,
    userList: [],
    newUser: {
      nickname: '',
      level: '',
      score: 0
    },
    // 模拟管理员密码
    adminPassword: 'admin123',
    // 模拟用户数据
    mockUserData: [
      {
        id: 1,
        nickname: '小明同学',
        score: 2580,
        level: 'S级大师',
        updateTime: '2024-01-15'
      },
      {
        id: 2,
        nickname: '学霸小红',
        score: 2340,
        level: 'A级专家',
        updateTime: '2024-01-15'
      },
      {
        id: 3,
        nickname: '努力小李',
        score: 2100,
        level: 'A级专家',
        updateTime: '2024-01-14'
      }
    ]
  },

  onLoad() {
    // 检查是否已经登录
    const authStatus = wx.getStorageSync('admin_auth')
    if (authStatus) {
      this.setData({ isAuthenticated: true })
      this.loadUserData()
    }
  },

  // 输入密码
  onPasswordInput(e) {
    this.setData({
      password: e.detail.value
    })
  },

  // 验证密码
  verifyPassword() {
    if (!this.data.password) {
      wx.showToast({
        title: '请输入密码',
        icon: 'none'
      })
      return
    }
    
    this.setData({ verifying: true })
    
    // 调用云函数验证管理员密码
    wx.cloud.callFunction({
      name: 'verifyAdmin',
      data: { password: this.data.password },
      success: res => {
        console.log('密码验证结果:', res)
        if (res.result && res.result.success && res.result.isValid) {
          this.setData({ isAuthenticated: true })
          wx.setStorageSync('admin_auth', true)
          wx.showToast({ 
            title: '验证成功', 
            icon: 'success' 
          })
          this.loadUserData()
        } else {
          wx.showToast({ 
            title: '密码错误', 
            icon: 'none' 
          })
        }
        this.setData({ verifying: false })
      },
      fail: err => {
        console.error('密码验证失败:', err)
        // 云函数失败时使用本地验证作为后备
        if (this.data.password === this.data.adminPassword) {
          this.setData({ isAuthenticated: true })
          wx.setStorageSync('admin_auth', true)
          wx.showToast({
            title: '验证成功(离线模式)',
            icon: 'success'
          })
          this.loadUserData()
        } else {
          wx.showToast({
            title: '密码错误',
            icon: 'none'
          })
        }
        this.setData({ verifying: false })
      }
    })
  },

  // 加载用户数据
  loadUserData() {
    wx.showLoading({
      title: '加载中...'
    })
    
    // 调用云函数获取用户数据
    wx.cloud.callFunction({
      name: 'getUserList',
      success: res => {
        wx.hideLoading()
        console.log('管理员获取用户列表成功:', res)
        if (res.result && res.result.success) {
          this.setData({
            userList: res.result.data || []
          })
        } else {
          console.error('获取用户列表失败:', res.result)
          // 失败时使用假数据
          this.setData({
            userList: [...this.data.mockUserData]
          })
          wx.showToast({
            title: '使用离线数据',
            icon: 'none'
          })
        }
      },
      fail: err => {
        wx.hideLoading()
        console.error('云函数调用失败:', err)
        // 失败时使用假数据
        this.setData({
          userList: [...this.data.mockUserData]
        })
        wx.showToast({
          title: '网络错误，使用离线数据',
          icon: 'none'
        })
      }
    })
  },

  // 新用户输入
  onNewUserInput(e) {
    const field = e.currentTarget.dataset.field
    this.setData({
      [`newUser.${field}`]: e.detail.value
    })
  },

  // 添加用户
  addUser() {
    const { nickname, level, score } = this.data.newUser
    if (!nickname || !level || !score) {
      wx.showToast({
        title: '请填写完整信息',
        icon: 'none'
      })
      return
    }
    
    wx.showLoading({
      title: '添加中...'
    })
    
    // 调用云函数添加用户
    wx.cloud.callFunction({
      name: 'addUser',
      data: {
        nickname,
        level,
        score: parseInt(score)
      },
      success: res => {
        wx.hideLoading()
        console.log('添加用户成功:', res)
        if (res.result && res.result.success) {
          // 清空表单
          this.setData({
            newUser: { nickname: '', level: '', score: 0 }
          })
          
          wx.showToast({
            title: '添加成功',
            icon: 'success'
          })
          
          // 重新加载用户列表
          this.loadUserData()
        } else {
          wx.showToast({
            title: res.result.error || '添加失败',
            icon: 'none'
          })
        }
      },
      fail: err => {
        wx.hideLoading()
        console.error('添加用户失败:', err)
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        })
      }
    })
  },

  // 用户信息输入（失去焦点时更新）
  onUserInput(e) {
    const { index, field } = e.currentTarget.dataset
    const value = e.detail.value
    const user = this.data.userList[index]
    
    if (!user || !user._id) {
      wx.showToast({
        title: '用户数据错误',
        icon: 'none'
      })
      return
    }
    
    wx.showLoading({
      title: '更新中...'
    })
    
    // 构建更新数据
    const updateData = {
      _id: user._id
    }
    updateData[field] = field === 'score' ? parseInt(value) : value
    
    // 调用云函数更新用户
    wx.cloud.callFunction({
      name: 'updateUser',
      data: updateData,
      success: res => {
        wx.hideLoading()
        console.log('更新用户成功:', res)
        if (res.result && res.result.success) {
          wx.showToast({
            title: '更新成功',
            icon: 'success'
          })
          
          // 重新加载用户列表以获取最新排序
          this.loadUserData()
        } else {
          wx.showToast({
            title: res.result.error || '更新失败',
            icon: 'none'
          })
          // 恢复原值
          this.loadUserData()
        }
      },
      fail: err => {
        wx.hideLoading()
        console.error('更新用户失败:', err)
        wx.showToast({
          title: '网络错误',
          icon: 'none'
        })
        // 恢复原值
        this.loadUserData()
      }
    })
  },

  // 删除用户
  deleteUser(e) {
    const index = e.currentTarget.dataset.index
    const user = this.data.userList[index]
    
    if (!user || !user._id) {
      wx.showToast({
        title: '用户数据错误',
        icon: 'none'
      })
      return
    }
    
    wx.showModal({
      title: '确认删除',
      content: `确定要删除用户"${user.nickname}"吗？`,
      success: (res) => {
        if (res.confirm) {
          wx.showLoading({
            title: '删除中...'
          })
          
          // 调用云函数删除用户
          wx.cloud.callFunction({
            name: 'deleteUser',
            data: {
              _id: user._id
            },
            success: res => {
              wx.hideLoading()
              console.log('删除用户成功:', res)
              if (res.result && res.result.success) {
                wx.showToast({
                  title: '删除成功',
                  icon: 'success'
                })
                
                // 重新加载用户列表
                this.loadUserData()
              } else {
                wx.showToast({
                  title: res.result.error || '删除失败',
                  icon: 'none'
                })
              }
            },
            fail: err => {
              wx.hideLoading()
              console.error('删除用户失败:', err)
              wx.showToast({
                title: '网络错误',
                icon: 'none'
              })
            }
          })
        }
      }
    })
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出管理后台吗？',
      success: (res) => {
        if (res.confirm) {
          this.setData({
            isAuthenticated: false,
            password: ''
          })
          wx.removeStorageSync('admin_auth')
          wx.showToast({
            title: '已退出',
            icon: 'success'
          })
        }
      }
    })
  }
})
